﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Modelo.Modulos.ClasesModelado;

namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
    public class TareasBD
    {
        private int promedio;
        public void InsertarTarea(SqlCommand comando, TareasMod obj)
        {
            try
            {
                string sp = "spInsertarTarea";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();


                comando.Parameters.Add(new SqlParameter("@NombreTarea", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@DescripcionTarea", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@IdPrioridad", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FechaInicio", SqlDbType.DateTime));
                comando.Parameters.Add(new SqlParameter("@FechaFin", SqlDbType.DateTime));
                comando.Parameters.Add(new SqlParameter("@PorcentajeAvanceTarea", SqlDbType.Int));
                  


                comando.Parameters[0].Value = obj.NombreTarea;
                comando.Parameters[1].Value = obj.IdProyecto;
                comando.Parameters[2].Value = obj.DescripcionTarea;
                comando.Parameters[3].Value = obj.IdUsuario;
                comando.Parameters[4].Value = obj.IdPrioridad;
                comando.Parameters[5].Value = obj.FechaInicio;
                comando.Parameters[6].Value = obj.FechaFin;
                comando.Parameters[7].Value = obj.PorcentajeAvanceTarea;
               



                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<TareasMod> ConsultarTareas(SqlCommand comando)
        {
            try
            {
                string sp = "spConsultarTareas";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<TareasMod> lista = new List<TareasMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TareasMod obj = new TareasMod();
                    obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                    obj.NombreTarea = dt.Rows[i]["NombreTarea"].ToString();
                    obj.IdTarea= Convert.ToInt32(dt.Rows[i]["IdTarea"]);
                    obj.NombreProyecto =dt.Rows[i]["NombreProyecto"].ToString();
                    obj.DescripcionTarea=dt.Rows[i]["DescripcionTarea"].ToString();
                    obj.IdUsuario=Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                    obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                    obj.IdPrioridad= Convert.ToInt32(dt.Rows[i]["IdPrioridad"]);
                    obj.NombrePrioridad=dt.Rows[i]["NombrePrioridad"].ToString();
	                obj.FechaInicio=Convert.ToDateTime(dt.Rows[i]["FechaInicio"]);
                    obj.FechaFin=Convert.ToDateTime(dt.Rows[i]["FechaFin"]);
                    obj.PorcentajeAvanceTarea = Convert.ToInt32(dt.Rows[i]["PorcentajeAvanceTarea"]);

                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<TareasMod> ConsultarTareaIdTarea(SqlCommand comando, TareasMod objs)
        {
            try
            {
                string sp = "spConsultarTareasbyIdTarea";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdTarea", SqlDbType.Int));

                comando.Parameters[0].Value = objs.IdTarea;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<TareasMod> lista = new List<TareasMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TareasMod obj = new TareasMod();

                    obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                    obj.NombreTarea = dt.Rows[i]["NombreTarea"].ToString();
                    obj.IdTarea = Convert.ToInt32(dt.Rows[i]["IdTarea"]);
                    obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();
                    obj.DescripcionTarea = dt.Rows[i]["DescripcionTarea"].ToString();
                    obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                    obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                    obj.IdPrioridad = Convert.ToInt32(dt.Rows[i]["IdPrioridad"]);
                    obj.NombrePrioridad = dt.Rows[i]["NombrePrioridad"].ToString();
                    obj.FechaInicio = Convert.ToDateTime(dt.Rows[i]["FechaInicio"]);
                    obj.FechaFin = Convert.ToDateTime(dt.Rows[i]["FechaFin"]);
                    obj.PorcentajeAvanceTarea = Convert.ToInt32(dt.Rows[i]["PorcentajeAvanceTarea"]);
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public TareasMod ConsultarPorcAvance(SqlCommand comando, TareasMod objs)
        {
            try
            {
                string sp = "spConsultarPorcAvance";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdTarea", SqlDbType.Int));

                comando.Parameters[0].Value = objs.IdTarea;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                
                TareasMod obj = new TareasMod();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                   

                    obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                    obj.NombreTarea = dt.Rows[i]["NombreTarea"].ToString();
                    obj.IdTarea = Convert.ToInt32(dt.Rows[i]["IdTarea"]);
                    obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();
                    obj.IdPrioridad = Convert.ToInt32(dt.Rows[i]["IdPrioridad"]);
                    obj.NombrePrioridad = dt.Rows[i]["NombrePrioridad"].ToString();
                    obj.PorcentajeAvanceTarea = Convert.ToInt32(dt.Rows[i]["PorcentajeAvanceTarea"]);
                   
                }


                return obj;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<TareasMod> ConsultarTareaIdUsuario(SqlCommand comando, TareasMod objs)
        {
            try
            {
                string sp = "spConsultarTareasbyIdUsuario";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));

                comando.Parameters[0].Value = objs.IdUsuario;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<TareasMod> lista = new List<TareasMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TareasMod obj = new TareasMod();

                    obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                    obj.NombreTarea = dt.Rows[i]["NombreTarea"].ToString();
                    obj.IdTarea = Convert.ToInt32(dt.Rows[i]["IdTarea"]);
                    obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();
                    obj.DescripcionTarea = dt.Rows[i]["DescripcionTarea"].ToString();
                    obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                    obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                    obj.IdPrioridad = Convert.ToInt32(dt.Rows[i]["IdPrioridad"]);
                    obj.NombrePrioridad = dt.Rows[i]["NombrePrioridad"].ToString();
                    obj.FechaInicio = Convert.ToDateTime(dt.Rows[i]["FechaInicio"]);
                    obj.FechaFin = Convert.ToDateTime(dt.Rows[i]["FechaFin"]);
                    obj.PorcentajeAvanceTarea = Convert.ToInt32(dt.Rows[i]["PorcentajeAvanceTarea"]);
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<TareasMod> ConsultarTareaIdUsuarioProyecto(SqlCommand comando, TareasMod objs)
        {
            try
            {
                string sp = "spConsultarTareasbyIdUsuarioProyecto";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

                comando.Parameters[0].Value = objs.IdUsuario;
                comando.Parameters[1].Value = objs.IdProyecto;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<TareasMod> lista = new List<TareasMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TareasMod obj = new TareasMod();

                    obj.IdProyecto = Convert.ToInt32(dt.Rows[i]["IdProyecto"]);
                    obj.NombreTarea = dt.Rows[i]["NombreTarea"].ToString();
                    obj.IdTarea = Convert.ToInt32(dt.Rows[i]["IdTarea"]);
                    obj.NombreProyecto = dt.Rows[i]["NombreProyecto"].ToString();
                    obj.DescripcionTarea = dt.Rows[i]["DescripcionTarea"].ToString();
                    obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                    obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                    obj.IdPrioridad = Convert.ToInt32(dt.Rows[i]["IdPrioridad"]);
                    obj.NombrePrioridad = dt.Rows[i]["NombrePrioridad"].ToString();
                    obj.FechaInicio = Convert.ToDateTime(dt.Rows[i]["FechaInicio"]);
                    obj.FechaFin = Convert.ToDateTime(dt.Rows[i]["FechaFin"]);
                    obj.PorcentajeAvanceTarea = Convert.ToInt32(dt.Rows[i]["PorcentajeAvanceTarea"]);
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void ActualizarTarea(SqlCommand comando, TareasMod obj)
        {
            try
            {
                string sp = "spActualizarTarea";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdTarea", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@NombreTarea", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@DescripcionTarea", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@IdPrioridad", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FechaInicio", SqlDbType.DateTime));
                comando.Parameters.Add(new SqlParameter("@FechaFin", SqlDbType.DateTime));
              


                comando.Parameters[0].Value = obj.IdTarea;
                comando.Parameters[1].Value = obj.NombreTarea;
                comando.Parameters[2].Value = obj.IdProyecto;
                comando.Parameters[3].Value = obj.DescripcionTarea;
                comando.Parameters[4].Value = obj.IdUsuario;
                comando.Parameters[5].Value = obj.IdPrioridad;
                comando.Parameters[6].Value = obj.FechaInicio;
                comando.Parameters[7].Value = obj.FechaFin;
             
                
                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void ActualizarPorceAvance(SqlCommand comando, TareasMod obj)
        {
            try
            {
                string sp = "spActualizarPorcAvance";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdTarea", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@PorcentajeAvanceTarea", SqlDbType.Int));



                comando.Parameters[0].Value = obj.IdTarea;
                comando.Parameters[1].Value = obj.PorcentajeAvanceTarea;


                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public void ActualizarPorceAvanceProyecto(SqlCommand comando, TareasMod obj)
        {
            try
            {
                string sp = "spActualizarPorcAvanceProyecto";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@PorcentajeAvance", SqlDbType.Int));



                comando.Parameters[0].Value = obj.IdProyecto;
                comando.Parameters[1].Value = obj.PorcentajeAvanceTarea;


                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public int ConsultarPromedio(SqlCommand comando, TareasMod objs)
        {
            try
            {
                string sp = "spConsultarPromedio";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

                comando.Parameters[0].Value = objs.IdProyecto;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    

                    promedio = Convert.ToInt32(dt.Rows[i]["promedio"]);
                    
                }


                return promedio;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }

        public List<TareasMod> ConsultarTareaIdProyecto(SqlCommand comando, TareasMod objs)
        {
            try
            {
                string sp = "spConsultarTareasbyIdProyecto";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                
                comando.Parameters.Add(new SqlParameter("@IdProyecto", SqlDbType.Int));

            
                comando.Parameters[0].Value = objs.IdProyecto;

                IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                DataSet ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                List<TareasMod> lista = new List<TareasMod>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    TareasMod obj = new TareasMod();

                  
                    obj.NombreTarea = dt.Rows[i]["NombreTarea"].ToString();
                    obj.IdTarea = Convert.ToInt32(dt.Rows[i]["IdTarea"]);
                    obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                    obj.PorcentajeAvanceTarea = Convert.ToInt32(dt.Rows[i]["PorcentajeAvanceTarea"]);
                    lista.Add(obj);
                }


                return lista;

            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
    }
}
